Computing device virtualization allows for the dynamic utilization of physical computing resources. A collection of computing devices or servers forming a pool of computing hardware resources are often operated in a virtualized environment where physical hardware computing resources are optimized when the virtualization software assigns physical hardware computing resources to virtual computing machines for use in executing software program applications. Two common applications for a virtualized environment include a cloud computing system that, for example, remotely hosts an application for other computing devices in communication with the cloud computing system via a network, or a dedicated onsite data center where varied physical computing hardware resources are connected via a network for purposes of efficiently executing software applications. Specific software applications, however, are often tied to a software license, such as an end-user license agreement (EULA). The license granted to the user often restricts the user to execute software applications based upon the allocation and usage of the physical computing resources that are made available to the licensed software application. Further, many licenses require that particular physical hardware metrics, e.g. processor core number and type, be used to execute the software application. For example, a software vendor may establish a license with a limit on the computing processing capacity that is made available to an application or a virtual machine in the virtualized environment.
License management and compliance become problematic for virtualized environments in part because of the dynamic nature of the physical computing resource allocation. A common solution to lessen the risk of a software license overage grant is for a software vendor to perform a full audit of a customer's system. However, such audit snapshots cannot ascertain past or present allocation metrics in a dynamic virtualized environment; nothing prevents a customer from changing system settings before the audit to appear in compliance, or after the audit, to change actual usage to create a license overage. Additionally, the relationship between a vendor and a customer can be strained when faced with such audits which consume valuable resources on both sides, in addition to increased risk that disruption to the customer's computing environments may occur.
Virtualized environments also increase the risk that a software license overage occurs unintentionally. For example, the physical resources assigned to execute an application can be different than those intended/licensed. In some instances, a hypervisor, which provides an abstraction layer between the physical hardware and the virtual machines of a virtualized environment, may present provisioning options to a virtual machine that do not match those processing metrics granted by the software license. Further, in the dynamic virtualized environment where the hypervisor may be set to optimize software application performance based upon an over-arching optimization policy, the hypervisor may assign a processor capable of executing the virtual machine that may be in excess of the capacity requested by the virtual machine and the hypervisor may not inform the virtual machine that it is being assigned to a physical processor with excess capacity. Such assignments by a hypervisor may unintentionally result in an overage of a software application license. Additionally, even if the number of physical processor cores allocated to a virtual machine is within license limits, the underlying processing speeds of the physical processing resources assigned to the virtual machine may be comprised of different classes, and as such, a software application could be assigned to a processor class for which it is not licensed. Such a scenario increases the difficulty in ensuring that the number and types of physical computing hardware resources assigned to a virtual machine are within license limits. Moreover, multiple instances of an application or additional virtual machines may be managed by multiple hypervisors as part of a computing network (e.g., one hypervisor for a public cloud computing system and a second hypervisor for a private cloud computing system). Each individual virtual machine or application instance may be executing in compliance with the license, but in the aggregate, the usage by the applications and/or virtual machines may result in an overage of the license.